#ifndef __TABLERO_H__
#define __TABLERO_H__

#include <jsoncpp/json.h>
#include <vector>
#include "Celda.h"
#include <string>

enum Estado {explotando, bajando, quieto};

class Tablero{
private:
	std::vector<Celda*> tablero;
	sdlImage background;
	sdlImage invisibleImg;
	unsigned cantFils;
	unsigned cantCols;
	Estado estado;
	std::string pathBloque;
public:
	//Constructor vacío
	Tablero();
	//Construye el tablero a partir de un Json
	explicit Tablero(const Json::Value&);
	//Maneja el evento pasado por parámetro.
	//Guarda la posición (x,y) de la celda que se clickeo en los unsigned
	//y devuelve true. Si no se clickeo alguna celda devuelve false y
	//los unsigned quedan sin modificar.
	bool handleEvent(const SDL_Event&,unsigned&,unsigned&);
	//Actualiza el tablero en base a un Json:Value
	void actualizar(const Json::Value&);
	//Dibuja el tablero en la superficie pasada como parámetro 
	//en la posición que indican los int (x,y);
	void dibujar(sdlSurface&,int,int);
	//Cambia la imagen de fondo del tablero
	void setBackground(const std::string&);
	//Cambia la imagen de los bloques del tablero
	void setImgBloque(const std::string&);
	//Devuelve el estado del tablero (explotando, bajando, quieto)
	Estado getEstado();
	~Tablero();
private:
	//Actualiza la celda de la posición (x,y) marcada por los unsigned
	void actualizarCelda(const Json::Value&,unsigned,unsigned);
	//Convierte números a colores de Celda
	ColorCelda::color decideColor(unsigned);
};

#endif // __TABLERO_H__
